Application Wherbarium.app

Documentation technique (2017-01-14).

1. Contexte.

    L'application Wherbarium.app fait partie du projet Wherbarium.net. Ce projet offre aux botanistes un herbier virtuel taxonomique et géographique : conserver les photos des plantes et leurs descriptions dans une base de données informatique sur un serveur local ou distant, fournir les outils pour accéder à la base de donnée depuis n'importe quel ordinateur fixe ou mobile. Le projet propose une version adaptée aux besoin d'un jardin botanique et une version à visée pédagogique.

Le terme Wherbarium est un nom déposé.

1.1. Prérequis pour installer un Wherbarium®.

1.1.0. Remarque 

    Un minimum de connaissance en matière de SGBDR est nécessaire pour lire avec profit ce manuel technique.

1.1.1. Serveur PostgreSQL.

    Tout serveur PostgreSQL d'un version pas trop ancienne peut convenir : le code SQL utilisé est standard et très basique. La version du serveur de développement pour le projet est la 9.3.
    Il est nécessaire que le serveur physique sur lequel est installé le serveur PostgreSQL dispose d'un accès internet à débit rapide, montant et descendant. Le fichier JPEG d'une photo de bonne qualité pèse autour de 4 Mo. Avec une connexion personnelle via un des Fournisseurs d'accès internet (FAI), le débit théorique courant est de 20Mbit/s descendant et 1Mbit/s montant, soit 2.5Mo/s et 125ko/s. Pour des raison techniques, le transfert d'une photo de 5 Mo demande de transmettre 15  Mo : soit environ 120s théoriques. Il est possible d'installer le serveur PostgreSQL sur sa propre machine, mais on aura un débit montant faible pour des travaux via le réseau. Force est dont de faire appel à un prestataire de service externe, si l'on veut administrer la base de données et l'utiliser à distance.
    La configuration initiale du serveur PostgreSQL se fait en créant un utilisateur (rôle de connexion) et une base de données, puis en y restaurant la sauvegarde du schéma conceptuel la base de donnée de référence, sauvegarde disponible dans un dépôt du projet.

    En l'état actuel, le projet Wherbarium.net peut, éventuellement, proposer l'accès à un serveur PostgreSQL, ainsi que la configuration et l'initialisation d'une base de donnée personnelle. Pour cela, il faut être membre de l'association Wherbarium.net (Contact)

1.1.2. Ordinateur Mac.

    Pour utiliser l'application Wherbarium.app, il est nécessaire d'utiliser un Mac, fixe ou portable, sous OS X 10.10+ (version antérieure prévue). La gestion de la base de donnée se fait à partir de ce Mac : opérations d'ajouts, de modifications, de suppressions et de listes des données.                        L'application Wherbarium.app est développée avec wxWidgets,  bibliothèque graphique libre utilisée comme boîte à outils de programmation d'interfaces graphiques multiplate-formes (https://fr.wikipedia.org/wiki/WxWidgets).
    A la première ouverture de l'application Wherbarium.app, un certains nombres de répertoires sont créés dans le répertoire "Images" du répertoire personnel de l'utilisateur. Notamment un répertoire "Wherbarium" qui contient les éléments nécessaires à la gestion de plusieurs base de données, le cas échéant.
    L'utilisation de l'API wxWidgets permettra le développement pour Windows et Linux à partir du même code

1.1.3. Navigateur

    N'importe quel navigateur à interface graphique pas trop ancien convient : Firefox, Safari, Internet Explorer, etc. Le navigateur permet de consulter la base de donnée selon le type de Wherbarium, mais pas d'en assurer la gestion.

2. Nature et organisation des données.

Les données du Wherbarium sont organisées selon le modèle Entité-Association.

Entités :

Relations :

La structure de la base de données d'un Wherbarium est  simple : 9 tables (ou relations) pour les entités, 8 pour les associations.
Chaque ligne d'une table représente l'instance d'une entité ou d'une association. Chaque colonne contient les valeurs des attributs des instances.

NB : en l'état, la structure des données ne permet pas de respecter les formes normales des relations...

2.1. Structure générale des tables.
2.1.1.  Ensemble des tables.

Chaque table comporte deux attributs internes (utilisés pour la gestion de la base de données) :
serial (integer - séquence) : à chaque création d'une nouvelle instance, serial prend une valeur supérieure de un à toutes les valeurs déjà utilisées ;
ident (integer) :  à chaque création d'une instance donnée, ident prend la valeur de serial ; pour cette instance la valeur de ident ne change jamais, afin d'assurer la cohérence des associations, notamment quelles que soient les suppressions, modification ou re-création de cette instance lors des mises au point.
Chaque table comporte une clé primaire et une ou plusieurs clés secondaire. La clé primaire assure l'unicité des instances.
Sauf exception (serial, ident, id_*, ... sont de type integer), les colonnes sont de type character varying.

2.1.2.  Tables des entités.

Les tables d'entités table comportent généralement  deux attributs internes (utilisés pour la gestion de la base de données) :
nb_taxon (integer) :attribut interne utilisé notamment pour la gestion de l'arborescence taxonomique ;
comment : commentaire spécifique à l'instance considérée et au Wherbarium en cause ;
attrs_xml : permet de stocker au format XML les attributs de l'entité (en cours de systématisation, permet d'avoir des variantes sans changer la structure de la base de données et de générer automatiquement les formulaires de saisie ou d'affichage)

2.1.3.  Tables des relations.

Chaque table de relation comporte deux colonnes dont la valeur est l'ident de l'instance pointée : ainsi dans la table familles familles_ordre, id_ordre a pour valeur la valeur de ident de l'instance de l'entité ordre mise en relation avec une ou plusieurs instances de l'entité famille.
NB : pour des raisons de facilité de validation, les noms latins ont été ajoutés ; ces colonnes seront supprimées une fois le structure des données stabilisée.

3. Affichage.

Les noms des ordres sont affichés en rouge.

Les noms des familles sont affichés en bleu.

Les noms des genres sont affichés en marron clair.

Les noms des plantes sont affichés en vert.